#include<stdio.h>
#include<stdbool.h>

bool ok[220]; // 记录一下所有可行的 X 的变化量

long long max(long long a, long long b) {
    return a > b ? a : b;
}

int main() {
    ok[0] = 1; // X 不变化时，变化量为 0，所以初始时 ok[0] = true
    int n, x, y, sum = 0, i, j;
    scanf("%d %d %d", &n, &x, &y);
    for(i=1;i<=n;i++) {
        int v; scanf("%d", &v);
        for(j=200-v;~j;j--) ok[j + v] |= ok[j]; // 对于每一个 ai, 它能使得 X 的变化量为 V 当且仅当存在数个 aj 之和为 V-ai，可以证明使用这种写法可以覆盖到所有能被表达出的变化量
        sum += v;
    }
    long long ans = 0;
    for(i=0;i<=2*x;i++) { // X 的变化量不会超过 2X，如果超过2X则不如不变化
        if(!ok[i]) continue;
        ans = max(ans, 1ll * (y + sum - i) * (y + sum - i) - 1ll * (x - i) * (x - i));
    }
    printf("%lld", ans);
}